package com.itaming.lycheeframework.support.utils;

import lombok.experimental.UtilityClass;

import java.nio.charset.Charset;

/**
 * Charset工具类
 *
 * @author A.Ming
 */
@UtilityClass
public class CharsetUtil {

    /**
     * 获取字符集
     *
     * <p>
     * 参数为 {@code null} 时返回 JVM 默认字符集
     *
     * @param charset 字符集
     * @return 字符集
     */
    public static Charset defaultIfNull(Charset charset) {
        return charset != null ? charset : CharsetUtil.getDefault();
    }

    /**
     * 获取 JVM 默认字符集
     *
     * <p>
     * 受以下启动参数影响：
     * <blockquote><pre>
     * -Dfile.encoding=UTF-8
     * </pre></blockquote>
     *
     * <p>
     * 从 JDK 18 开始，JVM 默认字符集固定为 UTF-8（<a href="https://openjdk.org/jeps/400">JEP 400</a>），
     * 且不再依赖平台本地编码。
     *
     * @return JVM 默认字符集
     */
    public static Charset getDefault() {
        return Charset.defaultCharset();
    }

    /**
     * 获取字符集名称
     *
     * @param charset 字符集
     * @return 字符集名称
     */
    public static String getCharsetName(Charset charset) {
        return charset != null ? charset.name() : null;
    }

}
